Gitea prend en charge le rôle de fournisseur OAuth2 pour permettre aux applications tierces d'accéder à ses ressources avec le consentement de l'utilisateur. Cette fonctionnalité est disponible depuis la version 1.8.0.
Point final | URL |
Point de terminaison d'autorisation | /login/oauth/authorize |
Access Token Endpoint | /login/oauth/access_token |
Pour le moment, Gitea ne prend en charge que le standard Authorization Code Grant avec un support supplémentaire de l' extension Proof Key for Code Exchange (PKCE) .
Pour utiliser la concession de code d'autorisation en tant qu'application tierce, il est nécessaire d'enregistrer une nouvelle application via la section «Paramètres» ( /user/settings/applications) des paramètres.
Actuellement, Gitea ne prend pas en charge les étendues (voir # 4300 ) et toutes les applications tierces auront accès à toutes les ressources de l'utilisateur et de ses organisations.
Remarque: cet exemple n'utilise pas PKCE.
1.Redirection vers l'utilisateur vers le point de terminaison d'autorisation afin d'obtenir son consentement pour accéder aux ressources:
https://[YOUR-GITEA-URL]/login/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI& response_type=code&state=STATE
Le CLIENT_IDpeut être obtenu en enregistrant une application dans les paramètres. Le STATEest une chaîne aléatoire qui sera renvoyée à votre application après l'autorisation de l'utilisateur. Le stateparamètre est facultatif mais doit être utilisé pour empêcher les attaques CSRF.
L'utilisateur sera maintenant invité à autoriser votre candidature. S'ils l'autorisent, l'utilisateur sera redirigé vers le REDIRECT_URL, par exemple:
https://[REDIRECT_URI]?code=RETURNED_CODE&state=STATE
2.En utilisant le fourni à codepartir de la redirection, vous pouvez demander une nouvelle application et un jeton d'actualisation. Les points de terminaison du jeton d'accès acceptent les requêtes POST avec application/jsonet application/x-www-form-urlencodedbody, par exemple:
POST https://[YOUR-GITEA-URL]/login/oauth/access_token
{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"code": "RETURNED_CODE",
"grant_type": "authorization_code",
"redirect_uri": "REDIRECT_URI"
}
Réponse:
{
"access_token":"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJnbnQiOjIsInR0IjowLCJleHAiOjE1NTUxNzk5MTIsImlhdCI6MTU1NTE3NjMxMn0.0-iFsAwBtxuckA0sNZ6QpBQmywVPz129u75vOM7wPJecw5wqGyBkmstfJHAjEOqrAf_V5Z-1QYeCh_Cz4RiKug",
"token_type":"bearer",
"expires_in":3600,
"refresh_token":"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJnbnQiOjIsInR0IjoxLCJjbnQiOjEsImV4cCI6MTU1NzgwNDMxMiwiaWF0IjoxNTU1MTc2MzEyfQ.S_HZQBy4q9r5SEzNGNIoFClT43HPNDbUdHH-GYNYYdkRfft6XptJBkUQscZsGxOW975Yk6RbgtGvq1nkEcklOw"
}
Le CLIENT_SECRETest le code secret unique généré pour cette application. Veuillez noter que le secret ne sera visible qu'après avoir créé / enregistré l'application avec Gitea et ne pourra pas être récupéré. Si vous perdez le secret, vous devez régénérer le secret via les paramètres de l'application.
Le REDIRECT_URIdans la access_tokendemande doit correspondre au REDIRECT_URIdans la authorizedemande.
3.Utilisez le access_tokenpour effectuer des requêtes API pour accéder aux ressources de l'utilisateur.